Virtual synchrony is used in group communication systems for interprocess message passing. Virtual synchrony allows programs running in a network to organize themselves into process groups and to send messages to groups (as opposed to sending the messages to specific processes). Total order messaging is one property of virtual synchrony where each message is delivered to all the group members in the identical order, and this is true even when two messages are transmitted simultaneously by different senders. This allows every group member to see the same events in the same order.
Virtual synchrony, and more specifically total order messaging, can be a very useful feature for processes running in cluster environments. A virtual machine (VM) is one such example of a cluster environment. A VM environment includes a host machine (e.g., computer or server) that is typically enabled to simultaneously run multiple VMs, where each VM may be used by a local or remote client. The host machine allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including operating systems known as guest operating systems. A hypervisor of the host machine virtualizes the underlying hardware of the host machine or emulates hardware devices, making the use of the VM transparent to the guest operating system or the local or remote client that uses the VM.
Unfortunately, all total ordering protocols used today require a multicast mechanism and, as a result, perform poorly in VM environments. In some VM environment there could be a host machine with multiple processors hosting multiple VMs, for instance up to the thousands of VMs.
The protocols that exist today for virtual synchrony total order messaging for clustering are not capable or efficient enough to scale to thousands of VMs that may be virtualized by a host machine. One such existing protocol is the totem protocol, which provides total order messaging among a collection of machines. There are also other protocols that also provide total order and membership guarantees for collections of machines. However, none of these systems provide an optimized protocol for virtual synchrony messaging within VMs.
As such, there is a need for a virtual synchrony total order messaging model that today's technology cannot provide. A mechanism to improve performance by custom designing a virtual synchrony total ordering system which matches the underlying architecture of VMs would be beneficial.